package modelo.entidad;

import java.io.Serializable;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.IndexColumn;
import javax.persistence.ManyToMany;

@Entity
@Table(name="vehiculo",schema="public")
@PrimaryKeyJoinColumn(name="id")
public class Vehiculo implements Serializable {
		
	@Id
	@Column(name="id")
	private int id;
	
	@Column(name="placa")
	private String placa;
	
	@Column(name="marca")
	private String marca;
	
	@Column(name="modelo")
	private String modelo;
	
	@Column(name="anno")
	private String anno;
	
	@Column(name="tipo")
	private String tipo;
		
	@Column(name="color")
	private String color;
	
	@Column(name="puertas")
	private String puertas;
	
	@Column(name="recorrido")
	private String recorrido;
	
	@Column(name="transmision")
	private String transmision;

	@Column(name="condiciones")
	private String condiciones;
	
	@ManyToOne
	@JoinColumn(name="id_ciudad")
	private Ciudad ciudad;;
	
	@Column(name="precio")
	private double precio;
	
	@Column(name="informacionadicional")
	private String informacionadicional;
	
	@Column(name="estatus")
	private String estatus;
	
	@OneToOne(cascade=CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Publicacion publicacion;
	
	@ManyToMany(cascade = {CascadeType.ALL},fetch=FetchType.EAGER)
	@JoinTable(name="caracteristicadelvehiculo", joinColumns={@JoinColumn(name="id_vehiculo")}, inverseJoinColumns={@JoinColumn(name="id_caracteristica")})
	private Set<Caracteristica> caracteristicas = new HashSet();

	public Vehiculo() {
		
	}

	public Vehiculo(int id, String placa, String marca, String modelo,
			String anno, String tipo, String color, String puertas,
			String recorrido, String transmision, String condiciones,
			Ciudad ciudad, double precio, String informacionadicional,
			String estatus) {
		super();
		this.id = id;
		this.placa = placa;
		this.marca = marca;
		this.modelo = modelo;
		this.anno = anno;
		this.tipo = tipo;
		this.color = color;
		this.puertas = puertas;
		this.recorrido = recorrido;
		this.transmision = transmision;
		this.condiciones = condiciones;
		this.ciudad = ciudad;
		this.precio = precio;
		this.informacionadicional = informacionadicional;
		this.estatus = estatus;
	}

	public int getId() {
		return id;
	}

	public String getPlaca() {
		return placa;
	}

	public String getMarca() {
		return marca;
	}

	public String getModelo() {
		return modelo;
	}

	public String getAnno() {
		return anno;
	}

	public String getTipo() {
		return tipo;
	}

	public String getColor() {
		return color;
	}

	public String getPuertas() {
		return puertas;
	}

	public String getRecorrido() {
		return recorrido;
	}

	public String getTransmision() {
		return transmision;
	}

	public String getCondiciones() {
		return condiciones;
	}

	public Ciudad getCiudad() {
		return ciudad;
	}

	public double getPrecio() {
		return precio;
	}

	public String getInformacionadicional() {
		return informacionadicional;
	}

	public String getEstatus() {
		return estatus;
	}

	public Publicacion getPublicacion() {
		return publicacion;
	}

	public Set<Caracteristica> getCaracteristicas() {
		return caracteristicas;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void setPlaca(String placa) {
		this.placa = placa;
	}

	public void setMarca(String marca) {
		this.marca = marca;
	}

	public void setModelo(String modelo) {
		this.modelo = modelo;
	}

	public void setAnno(String anno) {
		this.anno = anno;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public void setPuertas(String puertas) {
		this.puertas = puertas;
	}

	public void setRecorrido(String recorrido) {
		this.recorrido = recorrido;
	}

	public void setTransmision(String transmision) {
		this.transmision = transmision;
	}

	public void setCondiciones(String condiciones) {
		this.condiciones = condiciones;
	}

	public void setCiudad(Ciudad ciudad) {
		this.ciudad = ciudad;
	}

	public void setPrecio(double precio) {
		this.precio = precio;
	}

	public void setInformacionadicional(String informacionadicional) {
		this.informacionadicional = informacionadicional;
	}

	public void setEstatus(String estatus) {
		this.estatus = estatus;
	}

	public void setPublicacion(Publicacion publicacion) {
		this.publicacion = publicacion;
	}

	public void setCaracteristicas(Set<Caracteristica> caracteristicas) {
		this.caracteristicas = caracteristicas;
	}
	
	

	
}
